package com.cy.cy2025.util

import java.io.File


object M3u8ToMp4 {


    @JvmStatic
    fun main(args: Array<String>) {
        //changeToMp4("D:\\a\\0929\\JUFE-377 [中文字幕] 桃園怜奈 - 無戒心的爆乳姐姐被超絕倫弟弟狂插 被處男弟數次高潮潮吹NTR追擊SP！.m3u8")
        changeAllToMp4("D:\\a")
    }


    /**
     * 将m3u8文件夹转换为mp4文件，并且删除原文件夹
     */
    fun changeToMp4(m3u8Path: String) {
        runCatching {
            val t = System.currentTimeMillis()
            println("转换开始")
            val dir = File(m3u8Path)
            val m3u8Dir = File("$m3u8Path/index")
            val size = m3u8Dir.listFiles()?.size
            val mp4File = File(dir.parent + "/" + dir.name.substring(0,dir.name.lastIndexOf(".")) + ".mp4")
            println("to:" + mp4File.path)
            if (mp4File.exists()) mp4File.delete()
            println("转换为" + mp4File.path)

            m3u8Dir.listFiles()
                ?.apply { sortBy { it.name.substring(0, it.name.length - 3).toInt() } }?.forEach {
                println("转换中${it.name} / ($size)")
                mp4File.appendBytes(it.readBytes())
            }
            runCatching {
                println("删除原文件夹--:${dir.deleteRecursively()}")
            }.onFailure {
                println("删除失败:$it")
            }
            println("转换结束,耗时${System.currentTimeMillis() - t}ms")
        }.onFailure {
            println("转换失败:$it")
        }

    }


    /**
     * 遍历文件夹，将七下所有m3u8转换为mp4文件
     */
    fun changeAllToMp4(path: String) {
        val dir = File(path)
        dir.listFiles()?.forEach {
            if (it.isDirectory){
                if (it.name.endsWith(".m3u8",true)) {
                    changeToMp4(it.absolutePath)
                }else{
                    changeAllToMp4(it.absolutePath)
                }
            }

        }
    }


}